{*******************************************************************************
  KOL_unicode.inc
 Some redeclarations from Windows.pas for case, when UNICODE_CTRLS symbol is on.
*******************************************************************************}
{$IFDEF interface_part} ////////////////////////////////////////////////////////
  MakeIntAtom = MakeIntAtomW;
  {$IFDEF _D4orHigher}
  PRecoveryAgentInformation = PRecoveryAgentInformationW;
  TRecoveryAgentInformation = TRecoveryAgentInformationW;
  RECOVERY_AGENT_INFORMATION = RECOVERY_AGENT_INFORMATIONW;
  {$ENDIF}
  PWin32FindData = PWin32FindDataW;
  TWin32FindData = TWin32FindDataW;
  PHWProfileInfo = PHWProfileInfoW;
  THWProfileInfo = THWProfileInfoW;
  POSVersionInfo = POSVersionInfoW;
  TOSVersionInfo = TOSVersionInfoW;
  PLogColorSpace = PLogColorSpaceW;
  TLogColorSpace = TLogColorSpaceW;
  {$IFDEF _D4orHigher}
  PTextMetric = PTextMetricW;
  tagTEXTMETRIC = tagTEXTMETRICW;
  TTextMetric = TTextMetricW;
  TEXTMETRIC = TEXTMETRICW;
  PNewTextMetric = PNewTextMetricW;
  TNewTextMetric = TNewTextMetricW;
  NEWTEXTMETRIC = NEWTEXTMETRICW;
  PNewTextMetricEx = PNewTextMetricExW;
  {$ENDIF}
  PLogFont = PLogFontW;
  TLogFont = TLogFontW;
  {$IFDEF _D4orHigher}
  PEnumLogFont = PEnumLogFontW;
  TEnumLogFont = TEnumLogFontW;
  ENUMLOGFONT = ENUMLOGFONTW;
  PEnumLogFontEx = PEnumLogFontExW;
  TEnumLogFontEx = TEnumLogFontExW;
  ENUMLOGFONTEX = ENUMLOGFONTEXW;
  PExtLogFont = PExtLogFontW;
  tagEXTLOGFONT = tagEXTLOGFONTW;
  TExtLogFont = TExtLogFontW;
  EXTLOGFONT = EXTLOGFONTW;
  {$ENDIF}
  PDeviceMode = PDeviceModeW;
  TDeviceMode = TDeviceModeW;
  {$IFDEF _D4orHigher}
  DEVMODE = DEVMODEW;
  PDisplayDevice = PDisplayDeviceW;
  TDisplayDevice = TDisplayDeviceW;
  {$ENDIF}
  POutlineTextmetric = POutlineTextmetricW;
  TOutlineTextmetric = TOutlineTextmetricW;
  {$IFDEF _D4orHigher}
  OUTLINETEXTMETRIC = OUTLINETEXTMETRICW;
  {$ENDIF}
  PPolyText = PPolyTextW;
  {$IFDEF _D4orHigher}
  tagPOLYTEXT = tagPOLYTEXTW;
  POLYTEXT = POLYTEXTW;
  {$ENDIF}
  TPolyText = TPolyTextW;
  PGCPResults = PGCPResultsW;
  TGCPResults = TGCPResultsW;
  {$IFDEF _D4orHigher}
  GCP_RESULTS = GCP_RESULTSW;
  {$ENDIF}
  TFNOldFontEnumProc = TFNOldFontEnumProcW;
  TFNFontEnumProc = TFNFontEnumProcW;
  {$IFDEF _D4orHigher}
  PAxisInfo = PAxisInfoW;
  PAxesList = PAxesListW;
  PEnumLogFontExDV = PEnumLogFontExDVW;
  PEnumTextMetric = PEnumTextMetricW;
  {$ENDIF}
  PDocInfo = PDocInfoW;
  TDocInfo = TDocInfoW;
  {$IFDEF _D4orHigher}
  DOCINFO = DOCINFOW;
  {$ENDIF}
  MakeIntResource = MakeIntResourceW;
  PCreateStruct = PCreateStructW;
  TCreateStruct = TCreateStructW;
  {$IFDEF _D4orHigher}
  CREATESTRUCT = CREATESTRUCTW;
  {$ENDIF}
  PWndClassEx = PWndClassExW;
  TWndClassEx = TWndClassExW;
  {$IFDEF _D4orHigher}
  WNDCLASSEX = WNDCLASSEXW;
  {$ENDIF}
  PWndClass = PWndClassW;
  TWndClass = TWndClassW;
  {$IFDEF _D4orHigher}
  WNDCLASS = WNDCLASSW;
  {$ENDIF}
  //PMenuItemInfo = PMenuItemInfoW;
  //TMenuItemInfo = TMenuItemInfoW;
  //MENUITEMINFO = MENUITEMINFOW;
  PMsgBoxParams = PMsgBoxParamsW;
  TMsgBoxParams = TMsgBoxParamsW;
  {$IFDEF _D4orHigher}
  MSGBOXPARAMS = MSGBOXPARAMSW;
  {$ENDIF}
  PMDICreateStruct = PMDICreateStructW;
  TMDICreateStruct = TMDICreateStructW;
  PMultiKeyHelp = PMultiKeyHelpW;
  TMultiKeyHelp = TMultiKeyHelpW;
  {$IFDEF _D4orHigher}
  MULTIKEYHELP = MULTIKEYHELPW;
  {$ENDIF}
  PHelpWinInfo = PHelpWinInfoW;
  THelpWinInfo = THelpWinInfoW;
  {$IFDEF _D4orHigher}
  HELPWININFO = HELPWININFOW;
  {$ENDIF}
  PNonClientMetrics = PNonClientMetricsW;
  TNonClientMetrics = TNonClientMetricsW;
  {$IFDEF _D4orHigher}
  NONCLIENTMETRICS = NONCLIENTMETRICSW;
  {$ENDIF}
  PIconMetrics = PIconMetricsW;
  TIconMetrics = TIconMetricsW;
  {$IFDEF _D4orHigher}
  ICONMETRICS = ICONMETRICSW;
  {$ENDIF}
  PSerialKeys = PSerialKeysW;
  TSerialKeys = TSerialKeysW;
  {$IFDEF _D4orHigher}
  SERIALKEYS = SERIALKEYSW;
  {$ENDIF}
  PHighContrast = PHighContrastW;
  THighContrast = THighContrastW;
  {$IFDEF _D4orHigher}
  HIGHCONTRAST = HIGHCONTRASTW;
  {$ENDIF}
  PSoundsEntry = PSoundsEntryW;
  TSoundsEntry = TSoundsEntryW;
  {$IFDEF _D4orHigher}
  SOUNDSENTRY = SOUNDSENTRYW;
  {$ENDIF}
  PNumberFmt = PNumberFmtW;
  TNumberFmt = TNumberFmtW;
  {$IFDEF _D4orHigher}
  NUMBERFMT = NUMBERFMTW;
  {$ENDIF}
  PCurrencyFmt = PCurrencyFmtW;
  {$IFDEF _D4orHigher}
  _currencyfmt = _currencyfmtW;
  {$ENDIF}
  TCurrencyFmt = TCurrencyFmtW;
  {$IFDEF _D4orHigher}
  CURRENCYFMT = CURRENCYFMTW;
  {$ENDIF}
  PPValue = PPValueW;
  {$IFDEF _D4orHigher}
  pvalue = pvalueW;
  {$ENDIF}
  TPValue = TPValueW;
  PValueEnt = PValueEntW;
  TValueEnt = TValueEntW;
  {$IFDEF _D4orHigher}
  VALENT = VALENTW;
  {$ENDIF}
  PNetResource = PNetResourceW;
  TNetResource = TNetResourceW;
  {$IFDEF _D4orHigher}
  NETRESOURCE = NETRESOURCEW;
  {$ENDIF}
  PDiscDlgStruct = PDiscDlgStructW;
  {$IFDEF _D4orHigher}
  _DISCDLGSTRUCT = _DISCDLGSTRUCTW;
  {$ENDIF}
  TDiscDlgStruct = TDiscDlgStructW;
  {$IFDEF _D4orHigher}
  DISCDLGSTRUCT = DISCDLGSTRUCTW;
  {$ENDIF}
  PUniversalNameInfo = PUniversalNameInfoW;
  TUniversalNameInfo = TUniversalNameInfoW;
  {$IFDEF _D4orHigher}
  UNIVERSAL_NAME_INFO = UNIVERSAL_NAME_INFOW;
  {$ENDIF}
  PRemoteNameInfo = PRemoteNameInfoW;
  TRemoteNameInfo = TRemoteNameInfoW;
  {$IFDEF _D4orHigher}
  REMOTE_NAME_INFO = REMOTE_NAME_INFOW;
  {$ENDIF}

function AbortSystemShutdown(lpMachineName: PKOLChar): BOOL; stdcall;
function AccessCheckAndAuditAlarm(SubsystemName: PKOLChar;
  HandleId: Pointer; ObjectTypeName, ObjectName: PKOLChar;
  SecurityDescriptor: PSecurityDescriptor; DesiredAccess: DWORD;
  const GenericMapping: TGenericMapping;  ObjectCreation: BOOL;
  var GrantedAccess: DWORD; var AccessStatus, pfGenerateOnClose: BOOL): BOOL; stdcall;
{$IFDEF _D4orHigher}
function AccessCheckByTypeAndAuditAlarm(SubsystemName: PKOLChar;
  HandleId: Pointer; ObjectTypeName, ObjectName: PKOLChar;
  SecurityDescriptor: PSecurityDescriptor; PrincipalSelfSid: PSID; DesiredAccess: DWORD;
  AuditType: AUDIT_EVENT_TYPE; Flags: DWORD; ObjectTypeList: PObjectTypeList;
  ObjectTypeListLength: DWORD; const GenericMapping: TGenericMapping;  ObjectCreation: BOOL;
  var GrantedAccess: DWORD; var AccessStatus, pfGenerateOnClose: BOOL): BOOL; stdcall;
function AccessCheckByTypeResultListAndAuditAlarm(SubsystemName: PKOLChar;
  HandleId: Pointer; ObjectTypeName, ObjectName: PKOLChar;
  SecurityDescriptor: PSecurityDescriptor; PrincipalSelfSid: PSID; DesiredAccess: DWORD;
  AuditType: AUDIT_EVENT_TYPE; Flags: DWORD; ObjectTypeList: PObjectTypeList;
  ObjectTypeListLength: DWORD; const GenericMapping: TGenericMapping;  ObjectCreation: BOOL;
  var GrantedAccess: DWORD; var AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
{$ENDIF}
function BackupEventLog(hEventLog: THandle; lpBackupFileName: PKOLChar): BOOL; stdcall;
function ClearEventLog(hEventLog: THandle; lpBackupFileName: PKOLChar): BOOL; stdcall;
function CreateProcessAsUser(hToken: THandle; lpApplicationName: PKOLChar;
  lpCommandLine: PKOLChar; lpProcessAttributes: PSecurityAttributes;
  lpThreadAttributes: PSecurityAttributes; bInheritHandles: BOOL;
  dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: PKOLChar;
  const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): BOOL; stdcall;
function GetCurrentHwProfile(var lpHwProfileInfo: THWProfileInfo): BOOL; stdcall;
function GetFileSecurity(lpFileName: PKOLChar; RequestedInformation: SECURITY_INFORMATION;
  pSecurityDescriptor: PSecurityDescriptor; nLength: DWORD; var lpnLengthNeeded: DWORD): BOOL; stdcall;
function GetUserName(lpBuffer: PKOLChar; var nSize: DWORD): BOOL; stdcall;
function InitiateSystemShutdown(lpMachineName, lpMessage: PKOLChar;
  dwTimeout: DWORD; bForceAppsClosed, bRebootAfterShutdown: BOOL): BOOL; stdcall;
function LogonUser(lpszUsername, lpszDomain, lpszPassword: PKOLChar;
  dwLogonType, dwLogonProvider: DWORD; var phToken: THandle): BOOL; stdcall;
function LookupAccountName(lpSystemName, lpAccountName: PKOLChar;
  Sid: PSID; var cbSid: DWORD; ReferencedDomainName: PKOLChar;
  var cbReferencedDomainName: DWORD; var peUse: SID_NAME_USE): BOOL; stdcall;
function LookupAccountSid(lpSystemName: PKOLChar; Sid: PSID;
  Name: PKOLChar; var cbName: DWORD; ReferencedDomainName: PKOLChar;
  var cbReferencedDomainName: DWORD; var peUse: SID_NAME_USE): BOOL; stdcall;
function LookupPrivilegeDisplayName(lpSystemName, lpName: PKOLChar;
  lpDisplayName: PKOLChar; var cbDisplayName, lpLanguageId: DWORD): BOOL; stdcall;
function LookupPrivilegeName(lpSystemName: PKOLChar;
  var lpLuid: TLargeInteger; lpName: PKOLChar; var cbName: DWORD): BOOL; stdcall;
function LookupPrivilegeValue(lpSystemName, lpName: PKOLChar;
  var lpLuid: TLargeInteger): BOOL; stdcall;
function ObjectCloseAuditAlarm(SubsystemName: PKOLChar;
  HandleId: Pointer; GenerateOnClose: BOOL): BOOL; stdcall;
function ObjectDeleteAuditAlarm(SubsystemName: PKOLChar;
  HandleId: Pointer; GenerateOnClose: BOOL): BOOL; stdcall;
function ObjectOpenAuditAlarm(SubsystemName: PKOLChar; HandleId: Pointer;
  ObjectTypeName: PKOLChar; ObjectName: PKOLChar; pSecurityDescriptor: PSecurityDescriptor;
  ClientToken: THandle; DesiredAccess, GrantedAccess: DWORD;
  var Privileges: TPrivilegeSet; ObjectCreation, AccessGranted: BOOL;
  var GenerateOnClose: BOOL): BOOL; stdcall;
function ObjectPrivilegeAuditAlarm(SubsystemName: PKOLChar;
  HandleId: Pointer; ClientToken: THandle; DesiredAccess: DWORD;
  var Privileges: TPrivilegeSet; AccessGranted: BOOL): BOOL; stdcall;
function OpenBackupEventLog(lpUNCServerName, lpFileName: PKOLChar): THandle; stdcall;
function OpenEventLog(lpUNCServerName, lpSourceName: PKOLChar): THandle; stdcall;
function PrivilegedServiceAuditAlarm(SubsystemName, ServiceName: PKOLChar;
  ClientToken: THandle; var Privileges: TPrivilegeSet; AccessGranted: BOOL): BOOL; stdcall;
function ReadEventLog(hEventLog: THandle; dwReadFlags, dwRecordOffset: DWORD;
  lpBuffer: Pointer; nNumberOfBytesToRead: DWORD;
  var pnBytesRead, pnMinNumberOfBytesNeeded: DWORD): BOOL; stdcall;
function RegConnectRegistry(lpMachineName: PKOLChar; hKey: HKEY;
  var phkResult: HKEY): Longint; stdcall;
function RegCreateKey(hKey: HKEY; lpSubKey: PKOLChar;
  var phkResult: HKEY): Longint; stdcall;
function RegCreateKeyEx(hKey: HKEY; lpSubKey: PKOLChar;
  Reserved: DWORD; lpClass: PKOLChar; dwOptions: DWORD; samDesired: REGSAM;
  lpSecurityAttributes: PSecurityAttributes; var phkResult: HKEY;
  lpdwDisposition: PDWORD): Longint; stdcall;
function RegDeleteKey(hKey: HKEY; lpSubKey: PKOLChar): Longint; stdcall;
function RegDeleteValue(hKey: HKEY; lpValueName: PKOLChar): Longint; stdcall;
function RegEnumKeyEx(hKey: HKEY; dwIndex: DWORD; lpName: PKOLChar;
  var lpcbName: DWORD; lpReserved: Pointer; lpClass: PKOLChar;
  lpcbClass: PDWORD; lpftLastWriteTime: PFileTime): Longint; stdcall;
function RegEnumKey(hKey: HKEY; dwIndex: DWORD; lpName: PKOLChar; cbName: DWORD): Longint; stdcall;
function RegEnumValue(hKey: HKEY; dwIndex: DWORD; lpValueName: PKOLChar;
  var lpcbValueName: DWORD; lpReserved: Pointer; lpType: PDWORD;
  lpData: PByte; lpcbData: PDWORD): Longint; stdcall;
function RegLoadKey(hKey: HKEY; lpSubKey, lpFile: PKOLChar): Longint; stdcall;
function RegOpenKey(hKey: HKEY; lpSubKey: PKOLChar; var phkResult: HKEY): Longint; stdcall;
function RegOpenKeyEx(hKey: HKEY; lpSubKey: PKOLChar;
  ulOptions: DWORD; samDesired: REGSAM; var phkResult: HKEY): Longint; stdcall;
function RegQueryInfoKey(hKey: HKEY; lpClass: PKOLChar;
  lpcbClass: PDWORD; lpReserved: Pointer;
  lpcSubKeys, lpcbMaxSubKeyLen, lpcbMaxClassLen, lpcValues,
  lpcbMaxValueNameLen, lpcbMaxValueLen, lpcbSecurityDescriptor: PDWORD;
  lpftLastWriteTime: PFileTime): Longint; stdcall;
function RegQueryMultipleValues(hKey: HKEY; var ValList;
  NumVals: DWORD; lpValueBuf: PKOLChar; var ldwTotsize: DWORD): Longint; stdcall;
function RegQueryValue(hKey: HKEY; lpSubKey: PKOLChar;
  lpValue: PKOLChar; var lpcbValue: Longint): Longint; stdcall;
function RegQueryValueEx(hKey: HKEY; lpValueName: PKOLChar;
  lpReserved: Pointer; lpType: PDWORD; lpData: PByte; lpcbData: PDWORD): Longint; stdcall;
function RegReplaceKey(hKey: HKEY; lpSubKey: PKOLChar;
   lpNewFile: PKOLChar; lpOldFile: PKOLChar): Longint; stdcall;
function RegRestoreKey(hKey: HKEY; lpFile: PKOLChar; dwFlags: DWORD): Longint; stdcall;
function RegSaveKey(hKey: HKEY; lpFile: PKOLChar;
  lpSecurityAttributes: PSecurityAttributes): Longint; stdcall;
function RegSetValue(hKey: HKEY; lpSubKey: PKOLChar;
  dwType: DWORD; lpData: PKOLChar; cbData: DWORD): Longint; stdcall;
function RegSetValueEx(hKey: HKEY; lpValueName: PKOLChar;
  Reserved: DWORD; dwType: DWORD; lpData: Pointer; cbData: DWORD): Longint; stdcall;
function RegUnLoadKey(hKey: HKEY; lpSubKey: PKOLChar): Longint; stdcall;
function RegisterEventSource(lpUNCServerName, lpSourceName: PKOLChar): THandle; stdcall;
function ReportEvent(hEventLog: THandle; wType, wCategory: Word;
  dwEventID: DWORD; lpUserSid: Pointer; wNumStrings: Word;
  dwDataSize: DWORD; lpStrings, lpRawData: Pointer): BOOL; stdcall;
function SetFileSecurity(lpFileName: PKOLChar; SecurityInformation: SECURITY_INFORMATION;
  pSecurityDescriptor: PSecurityDescriptor): BOOL; stdcall;
function AddAtom(lpString: PKOLChar): ATOM; stdcall;
function BeginUpdateResource(pFileName: PKOLChar; bDeleteExistingResources: BOOL): THandle; stdcall;
function BuildCommDCB(lpDef: PKOLChar; var lpDCB: TDCB): BOOL; stdcall;
function BuildCommDCBAndTimeouts(lpDef: PKOLChar; var lpDCB: TDCB;
  var lpCommTimeouts: TCommTimeouts): BOOL; stdcall;
function CallNamedPipe(lpNamedPipeName: PKOLChar; lpInBuffer: Pointer;
  nInBufferSize: DWORD; lpOutBuffer: Pointer; nOutBufferSize: DWORD;
  var lpBytesRead: DWORD; nTimeOut: DWORD): BOOL; stdcall;
function CommConfigDialog(lpszName: PKOLChar; hWnd: HWND; var lpCC: TCommConfig): BOOL; stdcall;
function CompareString(Locale: LCID; dwCmpFlags: DWORD; lpString1: PKOLChar;
  cchCount1: Integer; lpString2: PKOLChar; cchCount2: Integer): Integer; stdcall;
function CopyFile(lpExistingFileName, lpNewFileName: PKOLChar; bFailIfExists: BOOL): BOOL; stdcall;
function CopyFileEx(lpExistingFileName, lpNewFileName: PKOLChar;
  lpProgressRoutine: TFNProgressRoutine; lpData: Pointer; pbCancel: PBool;
  dwCopyFlags: DWORD): BOOL; stdcall;
function CreateDirectory(lpPathName: PKOLChar;
  lpSecurityAttributes: PSecurityAttributes): BOOL; stdcall;
function CreateDirectoryEx(lpTemplateDirectory, lpNewDirectory: PKOLChar;
  lpSecurityAttributes: PSecurityAttributes): BOOL; stdcall;
function CreateEvent(lpEventAttributes: PSecurityAttributes;
  bManualReset, bInitialState: BOOL; lpName: PKOLChar): THandle; stdcall;
function CreateFile(lpFileName: PKOLChar; dwDesiredAccess, dwShareMode: DWORD;
  lpSecurityAttributes: PSecurityAttributes; dwCreationDisposition, dwFlagsAndAttributes: DWORD;
  hTemplateFile: THandle): THandle; stdcall;
function CreateFileMapping(hFile: THandle; lpFileMappingAttributes: PSecurityAttributes;
  flProtect, dwMaximumSizeHigh, dwMaximumSizeLow: DWORD; lpName: PKOLChar): THandle; stdcall;
function CreateHardLink(lpFileName, lpExistingFileName: PKOLChar;
  lpSecurityAttributes: PSecurityAttributes): BOOL; stdcall;
function CreateMailslot(lpName: PKOLChar; nMaxMessageSize: DWORD;
  lReadTimeout: DWORD; lpSecurityAttributes: PSecurityAttributes): THandle; stdcall;
function CreateNamedPipe(lpName: PKOLChar;
  dwOpenMode, dwPipeMode, nMaxInstances, nOutBufferSize, nInBufferSize, nDefaultTimeOut: DWORD;
  lpSecurityAttributes: PSecurityAttributes): THandle; stdcall;
function CreateProcess(lpApplicationName: PKOLChar; lpCommandLine: PKOLChar;
  lpProcessAttributes, lpThreadAttributes: PSecurityAttributes;
  bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer;
  lpCurrentDirectory: PKOLChar; const lpStartupInfo: TStartupInfo;
  var lpProcessInformation: TProcessInformation): BOOL; stdcall;
function CreateSemaphore(lpSemaphoreAttributes: PSecurityAttributes;
  lInitialCount, lMaximumCount: Longint; lpName: PKOLChar): THandle; stdcall;
function CreateWaitableTimer(lpTimerAttributes: PSecurityAttributes; bManualReset: BOOL; lpTimerName: PKOLChar): THandle; stdcall;
function DefineDosDevice(dwFlags: DWORD; lpDeviceName, lpTargetPath: PKOLChar): BOOL; stdcall;
function DeleteFile(lpFileName: PKOLChar): BOOL; stdcall;
function EndUpdateResource(hUpdate: THandle; fDiscard: BOOL): BOOL; stdcall;
function EnumCalendarInfo(lpCalInfoEnumProc: TFNCalInfoEnumProc; Locale: LCID;
  Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
function EnumDateFormats(lpDateFmtEnumProc: TFNDateFmtEnumProc;
  Locale: LCID; dwFlags: DWORD): BOOL; stdcall;
function EnumResourceLanguages(hModule: HMODULE; lpType, lpName: PKOLChar;
  lpEnumFunc: ENUMRESLANGPROC; lParam: Longint): BOOL; stdcall;
function EnumResourceNames(hModule: HMODULE; lpType: PKOLChar;
  lpEnumFunc: ENUMRESNAMEPROC; lParam: Longint): BOOL; stdcall;
function EnumResourceTypes(hModule: HMODULE; lpEnumFunc: ENUMRESTYPEPROC;
  lParam: Longint): BOOL; stdcall;
function EnumSystemCodePages(lpCodePageEnumProc: TFNCodepageEnumProc; dwFlags: DWORD): BOOL; stdcall;
function EnumSystemLocales(lpLocaleEnumProc: TFNLocaleEnumProc; dwFlags: DWORD): BOOL; stdcall;
function EnumTimeFormats(lpTimeFmtEnumProc: TFNTimeFmtEnumProc;
  Locale: LCID; dwFlags: DWORD): BOOL; stdcall;
function ExpandEnvironmentStrings(lpSrc: PKOLChar; lpDst: PKOLChar; nSize: DWORD): DWORD; stdcall;
procedure FatalAppExit(uAction: UINT; lpMessageText: PKOLChar); stdcall;
function FillConsoleOutputCharacter(hConsoleOutput: THandle; cCharacter: KOLChar;
  nLength: DWORD; dwWriteCoord: TCoord; var lpNumberOfCharsWritten: DWORD): BOOL; stdcall;
function FindAtom(lpString: PKOLChar): ATOM; stdcall;
function FindFirstChangeNotification(lpPathName: PKOLChar;
  bWatchSubtree: BOOL; dwNotifyFilter: DWORD): THandle; stdcall;
function FindFirstFile(lpFileName: PKOLChar; var lpFindFileData: TWIN32FindData): THandle; stdcall;
function FindFirstFileEx(lpFileName: PKOLChar; fInfoLevelId: TFindexInfoLevels;
  lpFindFileData: Pointer; fSearchOp: TFindexSearchOps; lpSearchFilter: Pointer;
  dwAdditionalFlags: DWORD): BOOL; stdcall;
function FindNextFile(hFindFile: THandle; var lpFindFileData: TWIN32FindData): BOOL; stdcall;
function FindResource(hModule: HMODULE; lpName, lpType: PKOLChar): HRSRC; stdcall;
function FindResourceEx(hModule: HMODULE; lpType, lpName: PKOLChar; wLanguage: Word): HRSRC; stdcall;
function FoldString(dwMapFlags: DWORD; lpSrcStr: PKOLChar; cchSrc: Integer;
  lpDestStr: PKOLChar; cchDest: Integer): Integer; stdcall;
function FormatMessage(dwFlags: DWORD; lpSource: Pointer; dwMessageId: DWORD; dwLanguageId: DWORD;
  lpBuffer: PKOLChar; nSize: DWORD; Arguments: Pointer): DWORD; stdcall;
function FreeEnvironmentStrings(EnvBlock: PKOLChar): BOOL; stdcall;
function GetAtomName(nAtom: ATOM; lpBuffer: PKOLChar; nSize: Integer): UINT; stdcall;
function GetBinaryType(lpApplicationName: PKOLChar; var lpBinaryType: DWORD): BOOL; stdcall;
function GetCommandLine: PKOLChar; stdcall;
function GetCompressedFileSize(lpFileName: PKOLChar; lpFileSizeHigh: PDWORD): DWORD; stdcall;
function GetComputerName(lpBuffer: PKOLChar; var nSize: DWORD): BOOL; stdcall;
function GetConsoleTitle(lpConsoleTitle: PKOLChar; nSize: DWORD): DWORD; stdcall;
function GetCurrencyFormat(Locale: LCID; dwFlags: DWORD; lpValue: PKOLChar;
  lpFormat: PCurrencyFmt; lpCurrencyStr: PKOLChar; cchCurrency: Integer): Integer; stdcall;
function GetCurrentDirectory(nBufferLength: DWORD; lpBuffer: PKOLChar): DWORD; stdcall;
function GetDateFormat(Locale: LCID; dwFlags: DWORD; lpDate: PSystemTime;
  lpFormat: PKOLChar; lpDateStr: PKOLChar; cchDate: Integer): Integer; stdcall;
function GetDefaultCommConfig(lpszName: PKOLChar;
  var lpCC: TCommConfig; var lpdwSize: DWORD): BOOL; stdcall;
function GetDiskFreeSpace(lpRootPathName: PKOLChar;
  var lpSectorsPerCluster, lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: DWORD): BOOL; stdcall;
function GetDiskFreeSpaceEx(lpDirectoryName: PKOLChar;
  var lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes; lpTotalNumberOfFreeBytes: PLargeInteger): BOOL; stdcall;
function GetDriveType(lpRootPathName: PKOLChar): UINT; stdcall;
function GetEnvironmentStrings: PKOLChar; stdcall;
function GetEnvironmentVariable(lpName: PKOLChar; lpBuffer: PKOLChar; nSize: DWORD): DWORD; stdcall;
         {$IFDEF _D4orHigher} overload; {$ENDIF}
function GetFileAttributes(lpFileName: PKOLChar): DWORD; stdcall;
function GetFileAttributesEx(lpFileName: PKOLChar;
  fInfoLevelId: TGetFileExInfoLevels; lpFileInformation: Pointer): BOOL; stdcall;
function GetFullPathName(lpFileName: PKOLChar; nBufferLength: DWORD;
  lpBuffer: PKOLChar; var lpFilePart: PKOLChar): DWORD; stdcall;
function GetLocaleInfo(Locale: LCID; LCType: LCTYPE; lpLCData: PKOLChar; cchData: Integer): Integer; stdcall;
function GetLogicalDriveStrings(nBufferLength: DWORD; lpBuffer: PKOLChar): DWORD; stdcall;
function GetModuleFileName(hModule: HINST; lpFilename: PKOLChar; nSize: DWORD): DWORD; stdcall;
function GetModuleHandle(lpModuleName: PKOLChar): HMODULE; stdcall;
function GetNamedPipeHandleState(hNamedPipe: THandle;
  lpState, lpCurInstances, lpMaxCollectionCount, lpCollectDataTimeout: PDWORD;
  lpUserName: PKOLChar; nMaxUserNameSize: DWORD): BOOL; stdcall;
function GetNumberFormat(Locale: LCID; dwFlags: DWORD; lpValue: PKOLChar;
  lpFormat: PNumberFmt; lpNumberStr: PKOLChar; cchNumber: Integer): Integer; stdcall;
function GetPrivateProfileInt(lpAppName, lpKeyName: PKOLChar; nDefault: Integer; lpFileName: PKOLChar): UINT; stdcall;
function GetPrivateProfileSection(lpAppName: PKOLChar; lpReturnedString: PKOLChar; nSize: DWORD; lpFileName: PKOLChar): DWORD; stdcall;
function GetPrivateProfileSectionNames(lpszReturnBuffer: PKOLChar; nSize: DWORD; lpFileName: PKOLChar): DWORD; stdcall;
function GetPrivateProfileString(lpAppName, lpKeyName, lpDefault: PKOLChar;
  lpReturnedString: PKOLChar; nSize: DWORD; lpFileName: PKOLChar): DWORD; stdcall;
function GetProfileInt(lpAppName, lpKeyName: PKOLChar; nDefault: Integer): UINT; stdcall;
function GetProfileSection(lpAppName: PKOLChar; lpReturnedString: PKOLChar; nSize: DWORD): DWORD; stdcall;
function GetProfileString(lpAppName, lpKeyName, lpDefault: PKOLChar;
  lpReturnedString: PKOLChar; nSize: DWORD): DWORD; stdcall;
function GetShortPathName(lpszLongPath: PKOLChar; lpszShortPath: PKOLChar;
  cchBuffer: DWORD): DWORD; stdcall;
procedure GetStartupInfo(var lpStartupInfo: TStartupInfo); stdcall;
function GetStringTypeEx(Locale: LCID; dwInfoType: DWORD;
  lpSrcStr: PKOLChar; cchSrc: Integer; var lpCharType): BOOL; stdcall;
function GetSystemDirectory(lpBuffer: PKOLChar; uSize: UINT): UINT; stdcall;
function GetTempFileName(lpPathName, lpPrefixString: PKOLChar;
  uUnique: UINT; lpTempFileName: PKOLChar): UINT; stdcall;
function GetTempPath(nBufferLength: DWORD; lpBuffer: PKOLChar): DWORD; stdcall;
function GetTimeFormat(Locale: LCID; dwFlags: DWORD; lpTime: PSystemTime;
  lpFormat: PKOLChar; lpTimeStr: PKOLChar; cchTime: Integer): Integer; stdcall;
function GetVersionEx(var lpVersionInformation: TOSVersionInfo): BOOL; stdcall;
function GetVolumeInformation(lpRootPathName: PKOLChar;
  lpVolumeNameBuffer: PKOLChar; nVolumeNameSize: DWORD; lpVolumeSerialNumber: PDWORD;
  var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
  lpFileSystemNameBuffer: PKOLChar; nFileSystemNameSize: DWORD): BOOL; stdcall;
function GetWindowsDirectory(lpBuffer: PKOLChar; uSize: UINT): UINT; stdcall;
function GlobalAddAtom(lpString: PKOLChar): ATOM; stdcall;
function GlobalFindAtom(lpString: PKOLChar): ATOM; stdcall;
function GlobalGetAtomName(nAtom: ATOM; lpBuffer: PKOLChar; nSize: Integer): UINT; stdcall;
function IsBadStringPtr(lpsz: PKOLChar; ucchMax: UINT): BOOL; stdcall;
function LCMapString(Locale: LCID; dwMapFlags: DWORD; lpSrcStr: PKOLChar;
  cchSrc: Integer; lpDestStr: PKOLChar; cchDest: Integer): Integer; stdcall;
function LoadLibrary(lpLibFileName: PKOLChar): HMODULE; stdcall;
function LoadLibraryEx(lpLibFileName: PKOLChar; hFile: THandle; dwFlags: DWORD): HMODULE; stdcall;
function MoveFile(lpExistingFileName, lpNewFileName: PKOLChar): BOOL; stdcall;
function MoveFileEx(lpExistingFileName, lpNewFileName: PKOLChar; dwFlags: DWORD): BOOL; stdcall;
function MoveFileWithProgress(lpExistingFileName, lpNewFileName: PKOLChar; lpProgressRoutine: TFNProgressRoutine;
  lpData: Pointer; dwFlags: DWORD): BOOL; stdcall;
function OpenEvent(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: PKOLChar): THandle; stdcall;
function OpenFileMapping(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: PKOLChar): THandle; stdcall;
function OpenMutex(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: PKOLChar): THandle; stdcall;
function OpenSemaphore(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: PKOLChar): THandle; stdcall;
function OpenWaitableTimer(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  lpTimerName: PKOLChar): THandle; stdcall;
procedure OutputDebugString(lpOutputString: PKOLChar); stdcall;
function PeekConsoleInput(hConsoleInput: THandle; var lpBuffer: TInputRecord;
  nLength: DWORD; var lpNumberOfEventsRead: DWORD): BOOL; stdcall;
function QueryDosDevice(lpDeviceName: PKOLChar; lpTargetPath: PKOLChar; ucchMax: DWORD): DWORD; stdcall;
{$IFDEF _D4orHigher}
function QueryRecoveryAgents(p1: PKOLChar; var p2: Pointer; var p3: TRecoveryAgentInformation): DWORD; stdcall;
{$ENDIF}
function ReadConsole(hConsoleInput: THandle; lpBuffer: Pointer;
  nNumberOfCharsToRead: DWORD; var lpNumberOfCharsRead: DWORD; lpReserved: Pointer): BOOL; stdcall;
function ReadConsoleInput(hConsoleInput: THandle; var lpBuffer: TInputRecord;
  nLength: DWORD; var lpNumberOfEventsRead: DWORD): BOOL; stdcall;
function ReadConsoleOutput(hConsoleOutput: THandle; lpBuffer: Pointer;
  dwBufferSize, dwBufferCoord: TCoord; var lpReadRegion: TSmallRect): BOOL; stdcall;
function ReadConsoleOutputCharacter(hConsoleOutput: THandle; lpCharacter: PKOLChar;
  nLength: DWORD; dwReadCoord: TCoord; var lpNumberOfCharsRead: DWORD): BOOL; stdcall;
function RemoveDirectory(lpPathName: PKOLChar): BOOL; stdcall;
function ScrollConsoleScreenBuffer(hConsoleOutput: THandle;
  const lpScrollRectangle: TSmallRect; lpClipRectangle: PSmallRect;
  dwDestinationOrigin: TCoord; var lpFill: TCharInfo): BOOL; stdcall;
function SearchPath(lpPath, lpFileName, lpExtension: PKOLChar;
  nBufferLength: DWORD; lpBuffer: PKOLChar; var lpFilePart: PKOLChar): DWORD; stdcall;
function SetComputerName(lpComputerName: PKOLChar): BOOL; stdcall;
function SetConsoleTitle(lpConsoleTitle: PKOLChar): BOOL; stdcall;
function SetCurrentDirectory(lpPathName: PKOLChar): BOOL; stdcall;
function SetDefaultCommConfig(lpszName: PKOLChar; lpCC: PCommConfig; dwSize: DWORD): BOOL; stdcall;
function SetEnvironmentVariable(lpName, lpValue: PKOLChar): BOOL; stdcall;
function SetFileAttributes(lpFileName: PKOLChar; dwFileAttributes: DWORD): BOOL; stdcall;
function SetLocaleInfo(Locale: LCID; LCType: LCTYPE; lpLCData: PKOLChar): BOOL; stdcall;
function SetVolumeLabel(lpRootPathName: PKOLChar; lpVolumeName: PKOLChar): BOOL; stdcall;
function UpdateResource(hUpdate: THandle; lpType, lpName: PKOLChar;
  wLanguage: Word; lpData: Pointer; cbData: DWORD): BOOL; stdcall;
function VerLanguageName(wLang: DWORD; szLang: PKOLChar; nSize: DWORD): DWORD; stdcall;
function WaitNamedPipe(lpNamedPipeName: PKOLChar; nTimeOut: DWORD): BOOL; stdcall;
function WriteConsole(hConsoleOutput: THandle; const lpBuffer: Pointer;
  nNumberOfCharsToWrite: DWORD; var lpNumberOfCharsWritten: DWORD; lpReserved: Pointer): BOOL; stdcall;
function WriteConsoleInput(hConsoleInput: THandle; const lpBuffer: TInputRecord;
  nLength: DWORD; var lpNumberOfEventsWritten: DWORD): BOOL; stdcall;
function WriteConsoleOutput(hConsoleOutput: THandle; lpBuffer: Pointer;
  dwBufferSize, dwBufferCoord: TCoord; var lpWriteRegion: TSmallRect): BOOL; stdcall;
function WriteConsoleOutputCharacter(hConsoleOutput: THandle;lpCharacter: PKOLChar;
  nLength: DWORD; dwWriteCoord: TCoord; var lpNumberOfCharsWritten: DWORD): BOOL; stdcall;
function WritePrivateProfileSection(lpAppName, lpString, lpFileName: PKOLChar): BOOL; stdcall;
function WritePrivateProfileString(lpAppName, lpKeyName, lpString, lpFileName: PKOLChar): BOOL; stdcall;
function WriteProfileSection(lpAppName, lpString: PKOLChar): BOOL; stdcall;
function WriteProfileString(lpAppName, lpKeyName, lpString: PKOLChar): BOOL; stdcall;
function lstrcat(lpString1, lpString2: PKOLChar): PKOLChar; stdcall;
function lstrcmp(lpString1, lpString2: PKOLChar): Integer; stdcall;
function lstrcmpi(lpString1, lpString2: PKOLChar): Integer; stdcall;
function lstrcpy(lpString1, lpString2: PKOLChar): PKOLChar; stdcall;
function lstrcpyn(lpString1, lpString2: PKOLChar; iMaxLength: Integer): PKOLChar; stdcall;
function lstrlen(lpString: PKOLChar): Integer; stdcall;
function MultinetGetConnectionPerformance(lpNetResource: PNetResource;
  lpNetConnectInfoStruc: PNetConnectInfoStruct): DWORD; stdcall;
function WNetAddConnection2(var lpNetResource: TNetResource;
  lpPassword, lpUserName: PKOLChar; dwFlags: DWORD): DWORD; stdcall;
function WNetAddConnection3(hwndOwner: HWND; var lpNetResource: TNetResource;
  lpPassword, lpUserName: PKOLChar; dwFlags: DWORD): DWORD; stdcall;
function WNetAddConnection(lpRemoteName, lpPassword, lpLocalName: PKOLChar): DWORD; stdcall;
function WNetCancelConnection2(lpName: PKOLChar; dwFlags: DWORD; fForce: BOOL): DWORD; stdcall;
function WNetCancelConnection(lpName: PKOLChar; fForce: BOOL): DWORD; stdcall;
function WNetConnectionDialog1(var lpConnDlgStruct: TConnectDlgStruct): DWORD; stdcall;
function WNetDisconnectDialog1(var lpConnDlgStruct: TDiscDlgStruct): DWORD; stdcall;
function WNetEnumResource(hEnum: THandle; var lpcCount: DWORD;
  lpBuffer: Pointer; var lpBufferSize: DWORD): DWORD; stdcall;
function WNetGetConnection(lpLocalName: PKOLChar;
  lpRemoteName: PKOLChar; var lpnLength: DWORD): DWORD; stdcall;
function WNetGetLastError(var lpError: DWORD; lpErrorBuf: PKOLChar;
  nErrorBufSize: DWORD; lpNameBuf: PKOLChar; nNameBufSize: DWORD): DWORD; stdcall;
function WNetGetNetworkInformation(lpProvider: PKOLChar;
  var lpNetInfoStruct: TNetInfoStruct): DWORD; stdcall;
function WNetGetProviderName(dwNetType: DWORD; lpProviderName: PKOLChar;
  var lpBufferSize: DWORD): DWORD; stdcall;
function WNetGetResourceParent(lpNetResource: PNetResource;
  lpBuffer: Pointer; var cbBuffer: DWORD): DWORD; stdcall;
function WNetGetUniversalName(lpLocalPath: PKOLChar; dwInfoLevel: DWORD;
  lpBuffer: Pointer; var lpBufferSize: DWORD): DWORD; stdcall;
function WNetGetUser(lpName: PKOLChar; lpUserName: PKOLChar; var lpnLength: DWORD): DWORD; stdcall;
function WNetOpenEnum(dwScope, dwType, dwUsage: DWORD;
  lpNetResource: PNetResource; var lphEnum: THandle): DWORD; stdcall;
function WNetSetConnection(lpName: PKOLChar; dwProperties: DWORD; pvValues: Pointer): DWORD; stdcall;
function WNetUseConnection(hwndOwner: HWND;
  var lpNetResource: TNetResource; lpUserID: PKOLChar;
  lpPassword: PKOLChar; dwFlags: DWORD; lpAccessName: PKOLChar;
  var lpBufferSize: DWORD; var lpResult: DWORD): DWORD; stdcall;
function GetFileVersionInfo(lptstrFilename: PKOLChar; dwHandle, dwLen: DWORD;
  lpData: Pointer): BOOL; stdcall;
function GetFileVersionInfoSize(lptstrFilename: PKOLChar; var lpdwHandle: DWORD): DWORD; stdcall;
function VerFindFile(uFlags: DWORD; szFileName, szWinDir, szAppDir, szCurDir: PKOLChar;
  var lpuCurDirLen: UINT; szDestDir: PKOLChar; var lpuDestDirLen: UINT): DWORD; stdcall;
function VerInstallFile(uFlags: DWORD;
  szSrcFileName, szDestFileName, szSrcDir, szDestDir, szCurDir, szTmpFile: PKOLChar;
  var lpuTmpFileLen: UINT): DWORD; stdcall;
function VerQueryValue(pBlock: Pointer; lpSubBlock: PKOLChar;
  var lplpBuffer: Pointer; var puLen: UINT): BOOL; stdcall;
function GetPrivateProfileStruct(lpszSection, lpszKey: PKOLChar;
  lpStruct: Pointer; uSizeStruct: UINT; szFile: PKOLChar): BOOL; stdcall;
function WritePrivateProfileStruct(lpszSection, lpszKey: PKOLChar;
  lpStruct: Pointer; uSizeStruct: UINT; szFile: PKOLChar): BOOL; stdcall;
function AddFontResource(FileName: PKOLChar): Integer; stdcall;
{$IFDEF _D4orHigher}
function AddFontResourceEx(p1: PKOLChar; p2: DWORD; p3: PDesignVector): Integer; stdcall;
{$ENDIF}
function CopyEnhMetaFile(p1: HENHMETAFILE; p2: PKOLChar): HENHMETAFILE; stdcall;
function CopyMetaFile(p1: HMETAFILE; p2: PKOLChar): HMETAFILE; stdcall;
function CreateColorSpace(var ColorSpace: TLogColorSpace): HCOLORSPACE; stdcall;
function CreateDC(lpszDriver, lpszDevice, lpszOutput: PKOLChar;
  lpdvmInit: PDeviceMode): HDC; stdcall;
function CreateEnhMetaFile(DC: HDC; FileName: PKOLChar; Rect: PRect; Desc: PKOLChar): HDC; stdcall;
function CreateFont(nHeight, nWidth, nEscapement, nOrientaion, fnWeight: Integer;
  fdwItalic, fdwUnderline, fdwStrikeOut, fdwCharSet, fdwOutputPrecision,
  fdwClipPrecision, fdwQuality, fdwPitchAndFamily: DWORD; lpszFace: PKOLChar): HFONT; stdcall;
function CreateFontIndirect(const p1: TLogFont): HFONT; stdcall;
{$IFDEF _D4orHigher}
function CreateFontIndirectEx(const p1: PEnumLogFontExDV): HFONT; stdcall;
{$ENDIF}
function CreateIC(lpszDriver, lpszDevice, lpszOutput: PKOLChar; lpdvmInit: PDeviceMode): HDC; stdcall;
function CreateMetaFile(p1: PKOLChar): HDC; stdcall;
function CreateScalableFontResource(p1: DWORD; p2, p3, p4: PKOLChar): BOOL; stdcall;
function DeviceCapabilities(pDriverName, pDeviceName, pPort: PKOLChar;
  iIndex: Integer; pOutput: PKOLChar; DevMode: PDeviceMode): Integer; stdcall;
function EnumFontFamilies(DC: HDC; p2: PKOLChar; p3: TFNFontEnumProc; p4: LPARAM): BOOL; stdcall;
function EnumFontFamiliesEx(DC: HDC; var p2: TLogFont;
  p3: TFNFontEnumProc; p4: LPARAM; p5: DWORD): BOOL; stdcall;
function EnumFonts(DC: HDC; lpszFace: PKOLChar; fntenmprc: TFNFontEnumProc;
  lpszData: PKOLChar): Integer; stdcall;
function EnumICMProfiles(DC: HDC; ICMProc: TFNICMEnumProc; p3: LPARAM): Integer; stdcall;
function ExtTextOut(DC: HDC; X, Y: Integer; Options: Longint;
  Rect: PRect; Str: PKOLChar; Count: Longint; Dx: PInteger): BOOL; stdcall;
function GetCharABCWidths(DC: HDC; FirstChar, LastChar: UINT; const ABCStructs): BOOL; stdcall;
function GetCharABCWidthsFloat(DC: HDC; FirstChar, LastChar: UINT; const ABCFloatSturcts): BOOL; stdcall;
function GetCharWidth32(DC: HDC; FirstChar, LastChar: UINT; const Widths): BOOL; stdcall;
function GetCharWidth(DC: HDC; FirstChar, LastChar: UINT; const Widths): BOOL; stdcall;
function GetCharWidthFloat(DC: HDC; FirstChar, LastChar: UINT; const Widths): BOOL; stdcall;
function GetCharacterPlacement(DC: HDC; p2: PKOLChar; p3, p4: BOOL;
  var p5: TGCPResults; p6: DWORD): DWORD; stdcall;
function GetEnhMetaFile(p1: PKOLChar): HENHMETAFILE; stdcall;
function GetEnhMetaFileDescription(p1: HENHMETAFILE; p2: UINT; p3: PKOLChar): UINT; stdcall;
function GetGlyphIndices(DC: HDC; p2: PKOLChar; p3: Integer; p4: PWORD; p5: DWORD): DWORD; stdcall;
function GetGlyphOutline(DC: HDC; uChar, uFormat: UINT;
  const lpgm: TGlyphMetrics; cbBuffer: DWORD; lpvBuffer: Pointer; const lpmat2: TMat2): DWORD; stdcall;
function GetICMProfile(DC: HDC; var Size: DWORD; Name: PKOLChar): BOOL; stdcall;
function GetLogColorSpace(p1: HCOLORSPACE; var ColorSpace: TLogColorSpace; Size: DWORD): BOOL; stdcall;
function GetMetaFile(p1: PKOLChar): HMETAFILE; stdcall;
function GetObject(p1: HGDIOBJ; p2: Integer; p3: Pointer): Integer; stdcall;
function GetOutlineTextMetrics(DC: HDC; p2: UINT; OTMetricStructs: Pointer): UINT; stdcall;
function GetTextExtentExPoint(DC: HDC; p2: PKOLChar;
  p3, p4: Integer; p5, p6: PInteger; var p7: TSize): BOOL; stdcall;
function GetTextExtentPoint32(DC: HDC; Str: PKOLChar; Count: Integer;
  var Size: TSize): BOOL; stdcall;
function GetTextExtentPoint(DC: HDC; Str: PKOLChar; Count: Integer;
  var Size: TSize): BOOL; stdcall;
function GetTextFace(DC: HDC; Count: Integer; Buffer: PKOLChar): Integer; stdcall;
function GetTextMetrics(DC: HDC; var TM: TTextMetric): BOOL; stdcall;
function PolyTextOut(DC: HDC; const PolyTextArray; Strings: Integer): BOOL; stdcall;
function RemoveFontResource(FileName: PKOLChar): BOOL; stdcall;
{$IFDEF _D4orHigher}
function RemoveFontResourceEx(p1: PKOLChar; p2: DWORD; p3: PDesignVector): BOOL; stdcall;
{$ENDIF}
function ResetDC(DC: HDC; const InitData: TDeviceMode): HDC; stdcall;
function SetICMProfile(DC: HDC; Name: PKOLChar): BOOL; stdcall;
function StartDoc(DC: HDC; const p2: TDocInfo): Integer; stdcall;
function TextOut(DC: HDC; X, Y: Integer; Str: PKOLChar; Count: Integer): BOOL; stdcall;
function UpdateICMRegKey(p1: DWORD; p2, p3: PKOLChar; p4: UINT): BOOL; stdcall;
function wglUseFontBitmaps(DC: HDC; p2, p3, p4: DWORD): BOOL; stdcall;
function wglUseFontOutlines(p1: HDC; p2, p3, p4: DWORD;
  p5, p6: Single; p7: Integer; p8: PGlyphMetricsFloat): BOOL; stdcall;
function AnsiToOem(const lpszSrc: LPCSTR; lpszDst: LPSTR): BOOL; stdcall;
function AnsiToOemBuff(lpszSrc: LPCSTR; lpszDst: LPSTR; cchDstLength: DWORD): BOOL; stdcall;
function AnsiToOemBuffA(lpszSrc: LPCSTR; lpszDst: LPSTR; cchDstLength: DWORD): BOOL; stdcall;
function AnsiUpper(lpsz: LPSTR): LPSTR; stdcall;
function AnsiUpperBuff(lpsz: LPSTR; cchLength: DWORD): DWORD; stdcall;
function AnsiLower(lpsz: LPSTR): LPSTR; stdcall;
function AnsiLowerBuff(lpsz: LPSTR; cchLength: DWORD): DWORD; stdcall;
function AnsiNext(const lpsz: LPCSTR): LPSTR; stdcall;
function AnsiPrev(const lpszStart: LPCSTR; const lpszCurrent: LPCSTR): LPSTR; stdcall;
function AppendMenu(hMenu: HMENU; uFlags, uIDNewItem: UINT;
  lpNewItem: PKOLChar): BOOL; stdcall;
//function BroadcastSystemMessage(Flags: DWORD; Recipients: PDWORD;
//  uiMessage: UINT; wParam: WPARAM; lParam: LPARAM): Longint; stdcall;
//function BroadcastSystemMessageW(Flags: DWORD; Recipients: PDWORD;
//  uiMessage: UINT; wParam: WPARAM; lParam: LPARAM): Longint; stdcall;
function CallMsgFilter(var lpMsg: TMsg; nCode: Integer): BOOL; stdcall;
function CallWindowProc(lpPrevWndFunc: TFNWndProc; hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
function ChangeDisplaySettings(var lpDevMode: TDeviceMode; dwFlags: DWORD): Longint; stdcall;
function ChangeDisplaySettingsEx(lpszDeviceName: PKOLChar; var lpDevMode: TDeviceMode;
        wnd: HWND; dwFlags: DWORD; lParam: Pointer): Longint; stdcall;
function ChangeMenu(hMenu: HMENU; cmd: UINT; lpszNewItem: PKOLChar;
  cmdInsert: UINT; flags: UINT): BOOL; stdcall;
function CharLower(lpsz: PKOLChar): PKOLChar; stdcall;
function CharLowerBuff(lpsz: PKOLChar; cchLength: DWORD): DWORD; stdcall;
function CharNext(lpsz: PKOLChar): PKOLChar; stdcall;
function CharNextEx(CodePage: Word; lpCurrentChar: LPCSTR; dwFlags: DWORD): LPSTR; stdcall;
function CharPrev(lpszStart: PKOLChar; lpszCurrent: PKOLChar): PKOLChar; stdcall;
function CharPrevEx(CodePage: Word; lpStart, lpCurrentChar: LPCSTR; dwFlags: DWORD): LPSTR; stdcall;
function CharToOem(lpszSrc: PKOLChar; lpszDst: PKOLChar): BOOL; stdcall;
function CharToOemBuff(lpszSrc: PKOLChar; lpszDst: PKOLChar; cchDstLength: DWORD): BOOL; stdcall;
function CharUpper(lpsz: PKOLChar): PKOLChar; stdcall;
function CharUpperBuff(lpsz: PKOLChar; cchLength: DWORD): DWORD; stdcall;
function CopyAcceleratorTable(hAccelSrc: HACCEL; var lpAccelDst; cAccelEntries: Integer): Integer; stdcall;
function CreateAcceleratorTable(var Accel; Count: Integer): HACCEL; stdcall;
function CreateDesktop(lpszDesktop, lpszDevice: PKOLChar;
  pDevmode: PDeviceMode; dwFlags: DWORD; dwDesiredAccess:
  DWORD; lpsa: PSecurityAttributes): HDESK; stdcall;
function CreateDialogIndirectParam(hInstance: HINST; const lpTemplate: TDlgTemplate;
  hWndParent: HWND; lpDialogFunc: TFNDlgProc; dwInitParam: LPARAM): HWND; stdcall;
function CreateDialogParam(hInstance: HINST; lpTemplateName: PKOLChar;
  hWndParent: HWND; lpDialogFunc: TFNDlgProc; dwInitParam: LPARAM): HWND; stdcall;
function CreateMDIWindow(lpClassName, lpWindowName: PKOLChar;
  dwStyle: DWORD; X, Y, nWidth, nHeight: Integer;
  hWndParent: HWND; hInstance: HINST; lParam: LPARAM): HWND; stdcall;
function CreateWindowEx(dwExStyle: DWORD; lpClassName: PKOLChar;
  lpWindowName: PKOLChar; dwStyle: DWORD; X, Y, nWidth, nHeight: Integer;
  hWndParent: HWND; hMenu: HMENU; hInstance: HINST; lpParam: Pointer): HWND; stdcall;
function CreateWindowStation(lpwinsta: PKOLChar; dwReserved, dwDesiredAccess: DWORD;
  lpsa: PSecurityAttributes): HWINSTA; stdcall;
function DefDlgProc(hDlg: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
function DefFrameProc(hWnd, hWndMDIClient: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
function DefMDIChildProc(hWnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
function DefWindowProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
function DialogBoxIndirectParam(hInstance: HINST; const lpDialogTemplate: TDlgTemplate;
  hWndParent: HWND; lpDialogFunc: TFNDlgProc; dwInitParam: LPARAM): Integer; stdcall;
function DialogBoxParam(hInstance: HINST; lpTemplateName: PKOLChar;
  hWndParent: HWND; lpDialogFunc: TFNDlgProc; dwInitParam: LPARAM): Integer; stdcall;
function DispatchMessage(const lpMsg: TMsg): Longint; stdcall;
function DlgDirList(hDlg: HWND; lpPathSpec: PKOLChar;
  nIDListBox, nIDStaticPath: Integer; uFileType: UINT): Integer; stdcall;
function DlgDirListComboBox(hDlg: HWND; lpPathSpec: PKOLChar;
  nIDComboBox, nIDStaticPath: Integer; uFiletype: UINT): Integer; stdcall;
function DlgDirSelectComboBoxEx(hDlg: HWND; lpString: PKOLChar;
  nCount, nIDComboBox: Integer): BOOL; stdcall;
function DlgDirSelectEx(hDlg: HWND; lpString: PKOLChar; nCount, nIDListBox: Integer): BOOL; stdcall;
function DrawState(DC: HDC; Brush: HBRUSH; CBFunc: TFNDrawStateProc;
  lData: LPARAM; wData: WPARAM; x, y, cx, cy: Integer; Flags: UINT): BOOL; stdcall;
function DrawText(hDC: HDC; lpString: PKOLChar; nCount: Integer;
  var lpRect: TRect; uFormat: UINT): Integer; stdcall;
function DrawTextEx(DC: HDC; lpchText: PKOLChar; cchText: Integer; var p4: TRect;
  dwDTFormat: UINT; DTParams: PDrawTextParams): Integer; stdcall;
function EnumDesktops(hwinsta: HWINSTA; lpEnumFunc: TFNDeskTopEnumProc; lParam: LPARAM): BOOL; stdcall;
function EnumDisplaySettings(lpszDeviceName: PKOLChar; iModeNum: DWORD;
  var lpDevMode: TDeviceMode): BOOL; stdcall;
{$IFDEF _D4orHigher}
function EnumDisplayDevices(Unused: Pointer; iDevNum: DWORD;
  var lpDisplayDevice: TDisplayDevice; dwFlags: DWORD): BOOL; stdcall;
{$ENDIF}
function EnumProps(hWnd: HWND; lpEnumFunc: TFNPropEnumProc): Integer; stdcall;
function EnumPropsEx(hWnd: HWND; lpEnumFunc: TFNPropEnumProcEx; lParam: LPARAM): Integer; stdcall;
function EnumWindowStations(lpEnumFunc: TFNWinStaEnumProc; lParam: LPARAM): BOOL; stdcall;
function FindWindow(lpClassName, lpWindowName: PKOLChar): HWND; stdcall;
function FindWindowEx(Parent, Child: HWND; ClassName, WindowName: PKOLChar): HWND; stdcall;
{$IFDEF _D4orHigher}
function GetAltTabInfo(hwnd: HWND; iItem: Integer; var pati: TAltTabInfo;
  pszItemText: PKOLChar; cchItemText: UINT): BOOL; stdcall;
{$ENDIF}
function GetClassInfo(hInstance: HINST; lpClassName: PKOLChar;
  var lpWndClass: TWndClass): BOOL; stdcall;
function GetClassInfoEx(Instance: HINST; Classname: PKOLChar; var WndClass: TWndClassEx): BOOL; stdcall;
function GetClassLong(hWnd: HWND; nIndex: Integer): DWORD; stdcall;
function GetClassName(hWnd: HWND; lpClassName: PKOLChar; nMaxCount: Integer): Integer; stdcall;
function GetClipboardFormatName(format: UINT; lpszFormatName: PKOLChar;
  cchMaxCount: Integer): Integer; stdcall;
function GetDlgItemText(hDlg: HWND; nIDDlgItem: Integer;
  lpString: PKOLChar; nMaxCount: Integer): UINT; stdcall;
function GetKeyNameText(lParam: Longint; lpString: PKOLChar; nSize: Integer): Integer; stdcall;
function GetKeyboardLayoutName(pwszKLID: PKOLChar): BOOL; stdcall;
function GetMenuItemInfo(p1: HMENU; p2: UINT; p3: BOOL; var p4: TMenuItemInfo): BOOL; stdcall;
function GetMenuString(hMenu: HMENU; uIDItem: UINT; lpString: PKOLChar;
  nMaxCount: Integer; uFlag: UINT): Integer; stdcall;
function GetMessage(var lpMsg: TMsg; hWnd: HWND;
  wMsgFilterMin, wMsgFilterMax: UINT): BOOL; stdcall;
function GetProp(hWnd: HWND; lpString: PKOLChar): THandle; stdcall;
function GetTabbedTextExtent(hDC: HDC; lpString: PKOLChar;
  nCount, nTabPositions: Integer; var lpnTabStopPositions): DWORD; stdcall;
function GetUserObjectInformation(hObj: THandle; nIndex: Integer; pvInfo: Pointer;
  nLength: DWORD; var lpnLengthNeeded: DWORD): BOOL; stdcall;
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; stdcall;
function GetWindowModuleFileName(hwnd: HWND; pszFileName: PKOLChar; cchFileNameMax: UINT): UINT; stdcall;
function GetWindowText(hWnd: HWND; lpString: PKOLChar; nMaxCount: Integer): Integer; stdcall;
function GetWindowTextLength(hWnd: HWND): Integer; stdcall;
function GrayString(hDC: HDC; hBrush: HBRUSH; lpOutputFunc: TFNGrayStringProc;
  lpData: LPARAM; nCount, X, Y, nWidth, nHeight: Integer): BOOL; stdcall;
function InsertMenu(hMenu: HMENU; uPosition, uFlags, uIDNewItem: UINT;
  lpNewItem: PKOLChar): BOOL; stdcall;
function InsertMenuItem(p1: HMENU; p2: UINT; p3: BOOL; const p4: TMenuItemInfo): BOOL; stdcall;
function IsCharAlpha(ch: KOLChar): BOOL; stdcall;
function IsCharAlphaNumeric(ch: KOLChar): BOOL; stdcall;
function IsCharLower(ch: KOLChar): BOOL; stdcall;
function IsCharUpper(ch: KOLChar): BOOL; stdcall;
function IsDialogMessage(hDlg: HWND; var lpMsg: TMsg): BOOL; stdcall;
function LoadAccelerators(hInstance: HINST; lpTableName: PKOLChar): HACCEL; stdcall;
function LoadBitmap(hInstance: HINST; lpBitmapName: PKOLChar): HBITMAP; stdcall;
function LoadCursor(hInstance: HINST; lpCursorName: PKOLChar): HCURSOR; stdcall;
function LoadCursorFromFile(lpFileName: PKOLChar): HCURSOR; stdcall;
function LoadIcon(hInstance: HINST; lpIconName: PKOLChar): HICON; stdcall;
function LoadImage(hInst: HINST; ImageName: PKOLChar; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; stdcall;
function LoadKeyboardLayout(pwszKLID: PKOLChar; Flags: UINT): HKL; stdcall;
function LoadMenu(hInstance: HINST; lpMenuName: PKOLChar): HMENU; stdcall;
function LoadMenuIndirect(lpMenuTemplate: Pointer): HMENU; stdcall;
function LoadString(hInstance: HINST; uID: UINT; lpBuffer: PKOLChar; nBufferMax: Integer): Integer; stdcall;
function MapVirtualKey(uCode, uMapType: UINT): UINT; stdcall;
function MapVirtualKeyEx(uCode, uMapType: UINT; dwhkl: HKL): UINT; stdcall;
function MessageBox(hWnd: HWND; lpText, lpCaption: PKOLChar; uType: UINT): Integer; stdcall;
function MessageBoxEx(hWnd: HWND; lpText, lpCaption: PKOLChar;
  uType: UINT; wLanguageId: Word): Integer; stdcall;
function MessageBoxIndirect(const MsgBoxParams: TMsgBoxParams): BOOL; stdcall;
function ModifyMenu(hMnu: HMENU; uPosition, uFlags, uIDNewItem: UINT;
  lpNewItem: PKOLChar): BOOL; stdcall;
function OemToAnsi(const lpszSrc: LPCSTR; lpszDst: LPSTR): BOOL; stdcall;
function OemToAnsiBuff(lpszSrc: LPCSTR; lpszDst: LPSTR; cchDstLength: DWORD): BOOL; stdcall;
function OemToChar(lpszSrc: PKOLChar; lpszDst: PKOLChar): BOOL; stdcall;
function OemToCharBuff(lpszSrc: PKOLChar; lpszDst: PKOLChar; cchDstLength: DWORD): BOOL; stdcall;
function OpenDesktop(lpszDesktop: PKOLChar; dwFlags: DWORD; fInherit: BOOL;
  dwDesiredAccess: DWORD): HDESK; stdcall;
function OpenWindowStation(lpszWinSta: PKOLChar; fInherit: BOOL;
  dwDesiredAccess: DWORD): HWINSTA; stdcall;
function PeekMessage(var lpMsg: TMsg; hWnd: HWND;
  wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; stdcall;
function PostMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): BOOL; stdcall;
function PostThreadMessage(idThread: DWORD; Msg: UINT; wParam: WPARAM; lParam: LPARAM): BOOL; stdcall;
function RealGetWindowClass(hwnd: HWND; pszType: PKOLChar; cchType: UINT): UINT; stdcall;
function RegisterClass(const lpWndClass: TWndClass): ATOM; stdcall;
function RegisterClassEx(const WndClass: TWndClassEx): ATOM; stdcall;
function RegisterClipboardFormat(lpszFormat: PKOLChar): UINT; stdcall;
{$IFDEF _D4orHigher}
function RegisterDeviceNotification(hRecipient: THandle; NotificationFilter: Pointer; Flags: DWORD): HDEVNOTIFY; stdcall;
{$ENDIF}
function RegisterWindowMessage(lpString: PKOLChar): UINT; stdcall;
function RemoveProp(hWnd: HWND; lpString: PKOLChar): THandle; stdcall;
function SendDlgItemMessage(hDlg: HWND; nIDDlgItem: Integer;
  Msg: UINT; wParam: WPARAM; lParam: LPARAM): Longint; stdcall;
function SendMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
function SendMessageCallback(hWnd: HWND; Msg: UINT; wParam: WPARAM;
  lParam: LPARAM; lpResultCallBack: TFNSendAsyncProc; dwData: DWORD): BOOL; stdcall;
function SendMessageTimeout(hWnd: HWND; Msg: UINT; wParam: WPARAM;
  lParam: LPARAM; fuFlags, uTimeout: UINT; var lpdwResult: DWORD): LRESULT; stdcall;
function SendNotifyMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM;
  lParam: LPARAM): BOOL; stdcall;
function SetClassLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): DWORD; stdcall;
function SetDlgItemText(hDlg: HWND; nIDDlgItem: Integer; lpString: PKOLChar): BOOL; stdcall;
function SetMenuItemInfo(p1: HMENU; p2: UINT; p3: BOOL; const p4: TMenuItemInfo): BOOL; stdcall;
function SetProp(hWnd: HWND; lpString: PKOLChar; hData: THandle): BOOL; stdcall;
function SetUserObjectInformation(hObj: THandle; nIndex: Integer;
  pvInfo: Pointer; nLength: DWORD): BOOL; stdcall;
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; stdcall;
function SetWindowText(hWnd: HWND; lpString: PKOLChar): BOOL; stdcall;
function SetWindowsHook(nFilterType: Integer; pfnFilterProc: TFNHookProc): HHOOK; stdcall;
function SetWindowsHookEx(idHook: Integer; lpfn: TFNHookProc; hmod: HINST; dwThreadId: DWORD): HHOOK; stdcall;
function SystemParametersInfo(uiAction, uiParam: UINT;
  pvParam: Pointer; fWinIni: UINT): BOOL; stdcall;
function TabbedTextOut(hDC: HDC; X, Y: Integer; lpString: PKOLChar; nCount, nTabPositions: Integer;
  var lpnTabStopPositions; nTabOrigin: Integer): Longint; stdcall;
function TranslateAccelerator(hWnd: HWND; hAccTable: HACCEL; var lpMsg: TMsg): Integer; stdcall;
function UnregisterClass(lpClassName: PKOLChar; hInstance: HINST): BOOL; stdcall;
function VkKeyScan(ch: KOLChar): SHORT; stdcall;
function VkKeyScanEx(ch: KOLChar; dwhkl: HKL): SHORT; stdcall;
function WinHelp(hWndMain: HWND; lpszHelp: PKOLChar; uCommand: UINT; dwData: DWORD): BOOL; stdcall;
function wsprintf(Output: PKOLChar; Format: PKOLChar): Integer; stdcall;
function wvsprintf(Output: PKOLChar; Format: PKOLChar; arglist: va_list): Integer; stdcall;
function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL; lpName: PWideChar): THandle;

const
  IDC_ARROW = MakeIntResource(32512);
  IDC_IBEAM = MakeIntResource(32513);
  IDC_WAIT = MakeIntResource(32514);
  IDC_CROSS = MakeIntResource(32515);
  IDC_UPARROW = MakeIntResource(32516);
  IDC_SIZE = MakeIntResource(32640);
  IDC_ICON = MakeIntResource(32641);
  IDC_SIZENWSE = MakeIntResource(32642);
  IDC_SIZENESW = MakeIntResource(32643);
  IDC_SIZEWE = MakeIntResource(32644);
  IDC_SIZENS = MakeIntResource(32645);
  IDC_SIZEALL = MakeIntResource(32646);
  IDC_NO = MakeIntResource(32648);
  IDC_HAND = MakeIntResource(32649);
  IDC_APPSTARTING = MakeIntResource(32650);
  IDC_HELP = MakeIntResource(32651);
  RT_CURSOR       = PKOLChar(1);
  RT_BITMAP       = PKOLChar(2);
  RT_ICON         = PKOLChar(3);
  RT_MENU         = PKOLChar(4);
  RT_DIALOG       = PKOLChar(5);
  RT_STRING       = PKOLChar(6);
  RT_FONTDIR      = PKOLChar(7);
  RT_FONT         = PKOLChar(8);
  RT_ACCELERATOR  = PKOLChar(9);
  RT_RCDATA       = PKOLChar(10);
  RT_MESSAGETABLE = PKOLChar(11);
  RT_VERSION      = PKOLChar(16);
  RT_DLGINCLUDE   = PKOLChar(17);
  RT_PLUGPLAY     = PKOLChar(19);
  RT_VXD          = PKOLChar(20);
  RT_ANICURSOR    = PKOLChar(21);
  RT_ANIICON      = PKOLChar(22);

{$ENDIF interface_part} ////////////////////////////////////////////////////////

{$IFDEF implementation_part} ///////////////////////////////////////////////////
function AbortSystemShutdown; external advapi32 name 'AbortSystemShutdownW';
function AccessCheckAndAuditAlarm; external advapi32 name 'AccessCheckAndAuditAlarmW';
{$IFDEF _D4orHigher}
function AccessCheckByTypeAndAuditAlarm; external advapi32 name 'AccessCheckByTypeAndAuditAlarmW';
function AccessCheckByTypeResultListAndAuditAlarm; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarmW';
{$ENDIF}
function BackupEventLog; external advapi32 name 'BackupEventLogW';
function ClearEventLog; external advapi32 name 'ClearEventLogW';
function CreateProcessAsUser; external advapi32 name 'CreateProcessAsUserW';
function GetCurrentHwProfile; external advapi32 name 'GetCurrentHwProfileW';
function GetFileSecurity; external advapi32 name 'GetFileSecurityW';
function GetUserName; external advapi32 name 'GetUserNameW';
function InitiateSystemShutdown; external advapi32 name 'InitiateSystemShutdownW';
function LogonUser; external advapi32 name 'LogonUserW';
function LookupAccountName; external advapi32 name 'LookupAccountNameW';
function LookupAccountSid; external advapi32 name 'LookupAccountSidW';
function LookupPrivilegeDisplayName; external advapi32 name 'LookupPrivilegeDisplayNameW';
function LookupPrivilegeName; external advapi32 name 'LookupPrivilegeNameW';
function LookupPrivilegeValue; external advapi32 name 'LookupPrivilegeValueW';
function ObjectCloseAuditAlarm; external advapi32 name 'ObjectCloseAuditAlarmW';
function ObjectDeleteAuditAlarm; external advapi32 name 'ObjectDeleteAuditAlarmW';
function ObjectOpenAuditAlarm; external advapi32 name 'ObjectOpenAuditAlarmW';
function ObjectPrivilegeAuditAlarm; external advapi32 name 'ObjectPrivilegeAuditAlarmW';
function OpenBackupEventLog; external advapi32 name 'OpenBackupEventLogW';
function OpenEventLog; external advapi32 name 'OpenEventLogW';
function PrivilegedServiceAuditAlarm; external advapi32 name 'PrivilegedServiceAuditAlarmW';
function ReadEventLog; external advapi32 name 'ReadEventLogW';
function RegConnectRegistry; external advapi32 name 'RegConnectRegistryW';
function RegCreateKey; external advapi32 name 'RegCreateKeyW';
function RegCreateKeyEx; external advapi32 name 'RegCreateKeyExW';
function RegDeleteKey; external advapi32 name 'RegDeleteKeyW';
function RegDeleteValue; external advapi32 name 'RegDeleteValueW';
function RegEnumKeyEx; external advapi32 name 'RegEnumKeyExW';
function RegEnumKey; external advapi32 name 'RegEnumKeyW';
function RegEnumValue; external advapi32 name 'RegEnumValueW';
function RegLoadKey; external advapi32 name 'RegLoadKeyW';
function RegOpenKey; external advapi32 name 'RegOpenKeyW';
function RegOpenKeyEx; external advapi32 name 'RegOpenKeyExW';
function RegQueryInfoKey; external advapi32 name 'RegQueryInfoKeyW';
function RegQueryMultipleValues; external advapi32 name 'RegQueryMultipleValuesW';
function RegQueryValue; external advapi32 name 'RegQueryValueW';
function RegQueryValueEx; external advapi32 name 'RegQueryValueExW';
function RegReplaceKey; external advapi32 name 'RegReplaceKeyW';
function RegRestoreKey; external advapi32 name 'RegRestoreKeyW';
function RegSaveKey; external advapi32 name 'RegSaveKeyW';
function RegSetValue; external advapi32 name 'RegSetValueW';
function RegSetValueEx; external advapi32 name 'RegSetValueExW';
function RegUnLoadKey; external advapi32 name 'RegUnLoadKeyW';
function RegisterEventSource; external advapi32 name 'RegisterEventSourceW';
function ReportEvent; external advapi32 name 'ReportEventW';
function SetFileSecurity; external advapi32 name 'SetFileSecurityW';
function AddAtom; external kernel32 name 'AddAtomW';
function BeginUpdateResource; external kernel32 name 'BeginUpdateResourceW';
function BuildCommDCB; external kernel32 name 'BuildCommDCBW';
function BuildCommDCBAndTimeouts; external kernel32 name 'BuildCommDCBAndTimeoutsW';
function CallNamedPipe; external kernel32 name 'CallNamedPipeW';
function CommConfigDialog; external kernel32 name 'CommConfigDialogW';
function CompareString; external kernel32 name 'CompareStringW';
function CopyFile; external kernel32 name 'CopyFileW';
function CopyFileEx; external kernel32 name 'CopyFileExW';
function CreateDirectory; external kernel32 name 'CreateDirectoryW';
function CreateDirectoryEx; external kernel32 name 'CreateDirectoryExW';
function CreateEvent; external kernel32 name 'CreateEventW';
function CreateFile; external kernel32 name 'CreateFileW';
function CreateFileMapping; external kernel32 name 'CreateFileMappingW';
function CreateHardLink; external kernel32 name 'CreateHardLinkW';
function CreateMailslot; external kernel32 name 'CreateMailslotW';
function CreateNamedPipe; external kernel32 name 'CreateNamedPipeW';
function CreateProcess; external kernel32 name 'CreateProcessW';
function CreateSemaphore; external kernel32 name 'CreateSemaphoreW';
function CreateWaitableTimer; external kernel32 name 'CreateWaitableTimerW';
function DefineDosDevice; external kernel32 name 'DefineDosDeviceW';
function DeleteFile; external kernel32 name 'DeleteFileW';
function EndUpdateResource; external kernel32 name 'EndUpdateResourceW';
function EnumCalendarInfo; external kernel32 name 'EnumCalendarInfoW';
function EnumDateFormats; external kernel32 name 'EnumDateFormatsW';
function EnumResourceLanguages; external kernel32 name 'EnumResourceLanguagesW';
function EnumResourceNames; external kernel32 name 'EnumResourceNamesW';
function EnumResourceTypes; external kernel32 name 'EnumResourceTypesW';
function EnumSystemCodePages; external kernel32 name 'EnumSystemCodePagesW';
function EnumSystemLocales; external kernel32 name 'EnumSystemLocalesW';
function EnumTimeFormats; external kernel32 name 'EnumTimeFormatsW';
function ExpandEnvironmentStrings; external kernel32 name 'ExpandEnvironmentStringsW';
procedure FatalAppExit; external kernel32 name 'FatalAppExitW';
function FillConsoleOutputCharacter; external kernel32 name 'FillConsoleOutputCharacterW';
function FindAtom; external kernel32 name 'FindAtomW';
function FindFirstChangeNotification; external kernel32 name 'FindFirstChangeNotificationW';
function FindFirstFile; external kernel32 name 'FindFirstFileW';
function FindFirstFileEx; external kernel32 name 'FindFirstFileExW';
function FindNextFile; external kernel32 name 'FindNextFileW';
function FindResource; external kernel32 name 'FindResourceW';
function FindResourceEx; external kernel32 name 'FindResourceExW';
function FoldString; external kernel32 name 'FoldStringW';
function FormatMessage; external kernel32 name 'FormatMessageW';
function FreeEnvironmentStrings; external kernel32 name 'FreeEnvironmentStringsW';
function GetAtomName; external kernel32 name 'GetAtomNameW';
function GetBinaryType; external kernel32 name 'GetBinaryTypeW';
function GetCommandLine; external kernel32 name 'GetCommandLineW';
function GetCompressedFileSize; external kernel32 name 'GetCompressedFileSizeW';
function GetComputerName; external kernel32 name 'GetComputerNameW';
function GetConsoleTitle; external kernel32 name 'GetConsoleTitleW';
function GetCurrencyFormat; external kernel32 name 'GetCurrencyFormatW';
function GetCurrentDirectory; external kernel32 name 'GetCurrentDirectoryW';
function GetDateFormat; external kernel32 name 'GetDateFormatW';
function GetDefaultCommConfig; external kernel32 name 'GetDefaultCommConfigW';
function GetDiskFreeSpace; external kernel32 name 'GetDiskFreeSpaceW';
function GetDiskFreeSpaceEx; external kernel32 name 'GetDiskFreeSpaceExW';
function GetDriveType; external kernel32 name 'GetDriveTypeW';
function GetEnvironmentStrings; external kernel32 name 'GetEnvironmentStringsW';
function GetEnvironmentVariable(lpName: PKOLChar; lpBuffer: PKOLChar;
  nSize: DWORD): DWORD; external kernel32 name 'GetEnvironmentVariableW';
function GetFileAttributes; external kernel32 name 'GetFileAttributesW';
function GetFileAttributesEx; external kernel32 name 'GetFileAttributesExW';
function GetFullPathName; external kernel32 name 'GetFullPathNameW';
function GetLocaleInfo; external kernel32 name 'GetLocaleInfoW';
function GetLogicalDriveStrings; external kernel32 name 'GetLogicalDriveStringsW';
function GetModuleFileName; external kernel32 name 'GetModuleFileNameW';
function GetModuleHandle; external kernel32 name 'GetModuleHandleW';
function GetNamedPipeHandleState; external kernel32 name 'GetNamedPipeHandleStateW';
function GetNumberFormat; external kernel32 name 'GetNumberFormatW';
function GetPrivateProfileInt; external kernel32 name 'GetPrivateProfileIntW';
function GetPrivateProfileSection; external kernel32 name 'GetPrivateProfileSectionW';
function GetPrivateProfileSectionNames; external kernel32 name 'GetPrivateProfileSectionNamesW';
function GetPrivateProfileString; external kernel32 name 'GetPrivateProfileStringW';
function GetProfileInt; external kernel32 name 'GetProfileIntW';
function GetProfileSection; external kernel32 name 'GetProfileSectionW';
function GetProfileString; external kernel32 name 'GetProfileStringW';
function GetShortPathName; external kernel32 name 'GetShortPathNameW';
procedure GetStartupInfo; external kernel32 name 'GetStartupInfoW';
function GetStringTypeEx; external kernel32 name 'GetStringTypeExW';
function GetSystemDirectory; external kernel32 name 'GetSystemDirectoryW';
function GetTempFileName; external kernel32 name 'GetTempFileNameW';
function GetTempPath; external kernel32 name 'GetTempPathW';
function GetTimeFormat; external kernel32 name 'GetTimeFormatW';
function GetVersionEx; external kernel32 name 'GetVersionExW';
function GetVolumeInformation; external kernel32 name 'GetVolumeInformationW';
function GetWindowsDirectory; external kernel32 name 'GetWindowsDirectoryW';
function GlobalAddAtom; external kernel32 name 'GlobalAddAtomW';
function GlobalFindAtom; external kernel32 name 'GlobalFindAtomW';
function GlobalGetAtomName; external kernel32 name 'GlobalGetAtomNameW';
function IsBadStringPtr; external kernel32 name 'IsBadStringPtrW';
function LCMapString; external kernel32 name 'LCMapStringW';
function LoadLibrary; external kernel32 name 'LoadLibraryW';
function LoadLibraryEx; external kernel32 name 'LoadLibraryExW';
function MoveFile; external kernel32 name 'MoveFileW';
function MoveFileEx; external kernel32 name 'MoveFileExW';
function MoveFileWithProgress; external kernel32 name 'MoveFileWithProgressW';
function OpenEvent; external kernel32 name 'OpenEventW';
function OpenFileMapping; external kernel32 name 'OpenFileMappingW';
function OpenMutex; external kernel32 name 'OpenMutexW';
function OpenSemaphore; external kernel32 name 'OpenSemaphoreW';
function OpenWaitableTimer; external kernel32 name 'OpenWaitableTimerW';
procedure OutputDebugString; external kernel32 name 'OutputDebugStringW';
function PeekConsoleInput; external kernel32 name 'PeekConsoleInputW';
function QueryDosDevice; external kernel32 name 'QueryDosDeviceW';
{$IFDEF _D4orHigher}
function QueryRecoveryAgents; external kernel32 name 'QueryRecoveryAgentsW';
{$ENDIF}
function ReadConsole; external kernel32 name 'ReadConsoleW';
function ReadConsoleInput; external kernel32 name 'ReadConsoleInputW';
function ReadConsoleOutput; external kernel32 name 'ReadConsoleOutputW';
function ReadConsoleOutputCharacter; external kernel32 name 'ReadConsoleOutputCharacterW';
function RemoveDirectory; external kernel32 name 'RemoveDirectoryW';
function ScrollConsoleScreenBuffer; external kernel32 name 'ScrollConsoleScreenBufferW';
function SearchPath; external kernel32 name 'SearchPathW';
function SetComputerName; external kernel32 name 'SetComputerNameW';
function SetConsoleTitle; external kernel32 name 'SetConsoleTitleW';
function SetCurrentDirectory; external kernel32 name 'SetCurrentDirectoryW';
function SetDefaultCommConfig; external kernel32 name 'SetDefaultCommConfigW';
function SetEnvironmentVariable; external kernel32 name 'SetEnvironmentVariableW';
function SetFileAttributes; external kernel32 name 'SetFileAttributesW';
function SetLocaleInfo; external kernel32 name 'SetLocaleInfoW';
function SetVolumeLabel; external kernel32 name 'SetVolumeLabelW';
function UpdateResource; external kernel32 name 'UpdateResourceW';
function VerLanguageName; external kernel32 name 'VerLanguageNameW';
function WaitNamedPipe; external kernel32 name 'WaitNamedPipeW';
function WriteConsole; external kernel32 name 'WriteConsoleW';
function WriteConsoleInput; external kernel32 name 'WriteConsoleInputW';
function WriteConsoleOutput; external kernel32 name 'WriteConsoleOutputW';
function WriteConsoleOutputCharacter; external kernel32 name 'WriteConsoleOutputCharacterW';
function WritePrivateProfileSection; external kernel32 name 'WritePrivateProfileSectionW';
function WritePrivateProfileString; external kernel32 name 'WritePrivateProfileStringW';
function WriteProfileSection; external kernel32 name 'WriteProfileSectionW';
function WriteProfileString; external kernel32 name 'WriteProfileStringW';
function lstrcat; external kernel32 name 'lstrcatW';
function lstrcmp; external kernel32 name 'lstrcmpW';
function lstrcmpi; external kernel32 name 'lstrcmpiW';
function lstrcpy; external kernel32 name 'lstrcpyW';
function lstrcpyn; external kernel32 name 'lstrcpynW';
function lstrlen; external kernel32 name 'lstrlenW';
function MultinetGetConnectionPerformance; external mpr name 'MultinetGetConnectionPerformanceW';
function WNetAddConnection2; external mpr name 'WNetAddConnection2W';
function WNetAddConnection3; external mpr name 'WNetAddConnection3W';
function WNetAddConnection; external mpr name 'WNetAddConnectionW';
function WNetCancelConnection2; external mpr name 'WNetCancelConnection2W';
function WNetCancelConnection; external mpr name 'WNetCancelConnectionW';
function WNetConnectionDialog1; external mpr name 'WNetConnectionDialog1W';
function WNetDisconnectDialog1; external mpr name 'WNetDisconnectDialog1W';
function WNetEnumResource; external mpr name 'WNetEnumResourceW';
function WNetGetConnection; external mpr name 'WNetGetConnectionW';
function WNetGetLastError; external mpr name 'WNetGetLastErrorW';
function WNetGetNetworkInformation; external mpr name 'WNetGetNetworkInformationW';
function WNetGetProviderName; external mpr name 'WNetGetProviderNameW';
function WNetGetResourceParent; external mpr name 'WNetGetResourceParentW';
function WNetGetUniversalName; external mpr name 'WNetGetUniversalNameW';
function WNetGetUser; external mpr name 'WNetGetUserW';
function WNetOpenEnum; external mpr name 'WNetOpenEnumW';
function WNetSetConnection; external mpr name 'WNetSetConnectionW';
function WNetUseConnection; external mpr name 'WNetUseConnectionW';
function GetFileVersionInfo; external version name 'GetFileVersionInfoW';
function GetFileVersionInfoSize; external version name 'GetFileVersionInfoSizeW';
function VerFindFile; external version name 'VerFindFileW';
function VerInstallFile; external version name 'VerInstallFileW';
function VerQueryValue; external version name 'VerQueryValueW';
function GetPrivateProfileStruct; external kernel32 name 'GetPrivateProfileStructW';
function WritePrivateProfileStruct; external kernel32 name 'WritePrivateProfileStructW';
function AddFontResource; external gdi32 name 'AddFontResourceW';
{$IFDEF _D4orHigher}
function AddFontResourceEx; external gdi32 name 'AddFontResourceExW';
{$ENDIF}
function CopyEnhMetaFile; external gdi32 name 'CopyEnhMetaFileW';
function CopyMetaFile; external gdi32 name 'CopyMetaFileW';
function CreateColorSpace; external gdi32 name 'CreateColorSpaceW';
function CreateDC; external gdi32 name 'CreateDCW';
function CreateEnhMetaFile; external gdi32 name 'CreateEnhMetaFileW';
function CreateFont; external gdi32 name 'CreateFontW';
function CreateFontIndirect; external gdi32 name 'CreateFontIndirectW';
{$IFDEF _D4orHigher}
function CreateFontIndirectEx; external gdi32 name 'CreateFontIndirectExW';
{$ENDIF}
function CreateIC; external gdi32 name 'CreateICW';
function CreateMetaFile; external gdi32 name 'CreateMetaFileW';
function CreateScalableFontResource; external gdi32 name 'CreateScalableFontResourceW';
function DeviceCapabilities; external gdi32 name 'DeviceCapabilitiesW';
function EnumFontFamilies; external gdi32 name 'EnumFontFamiliesW';
function EnumFontFamiliesEx; external gdi32 name 'EnumFontFamiliesExW';
function EnumFonts; external gdi32 name 'EnumFontsW';
function EnumICMProfiles; external gdi32 name 'EnumICMProfilesW';
function ExtTextOut; external gdi32 name 'ExtTextOutW';
function GetCharABCWidths; external gdi32 name 'GetCharABCWidthsW';
function GetCharABCWidthsFloat; external gdi32 name 'GetCharABCWidthsFloatW';
function GetCharWidth32; external gdi32 name 'GetCharWidth32W';
function GetCharWidth; external gdi32 name 'GetCharWidthW';
function GetCharWidthFloat; external gdi32 name 'GetCharWidthFloatW';
function GetCharacterPlacement; external gdi32 name 'GetCharacterPlacementW';
function GetEnhMetaFile; external gdi32 name 'GetEnhMetaFileW';
function GetEnhMetaFileDescription; external gdi32 name 'GetEnhMetaFileDescriptionW';
function GetGlyphIndices; external gdi32 name 'GetGlyphIndicesW';
function GetGlyphOutline; external gdi32 name 'GetGlyphOutlineW';
function GetICMProfile; external gdi32 name 'GetICMProfileW';
function GetLogColorSpace; external gdi32 name 'GetLogColorSpaceW';
function GetMetaFile; external gdi32 name 'GetMetaFileW';
function GetObject; external gdi32 name 'GetObjectW';
function GetOutlineTextMetrics; external gdi32 name 'GetOutlineTextMetricsW';
function GetTextExtentExPoint; external gdi32 name 'GetTextExtentExPointW';
function GetTextExtentPoint32; external gdi32 name 'GetTextExtentPoint32W';
function GetTextExtentPoint; external gdi32 name 'GetTextExtentPointW';
function GetTextFace; external gdi32 name 'GetTextFaceW';
function GetTextMetrics; external gdi32 name 'GetTextMetricsW';
function PolyTextOut; external gdi32 name 'PolyTextOutW';
function RemoveFontResource; external gdi32 name 'RemoveFontResourceW';
{$IFDEF _D4orHigher}
function RemoveFontResourceEx; external gdi32 name 'RemoveFontResourceExW';
{$ENDIF}
function ResetDC; external gdi32 name 'ResetDCW';
function SetICMProfile; external gdi32 name 'SetICMProfileW';
function StartDoc; external gdi32 name 'StartDocW';
function TextOut; external gdi32 name 'TextOutW';
function UpdateICMRegKey; external gdi32 name 'UpdateICMRegKeyW';
function wglUseFontBitmaps; external opengl32 name 'wglUseFontBitmapsW';
function wglUseFontOutlines; external opengl32 name 'wglUseFontOutlinesW';
function AnsiToOem; external user32 name 'CharToOemW';
function AnsiToOemBuff; external user32 name 'CharToOemBuffW';
function AnsiToOemBuffA; external user32 name 'CharToOemBuffA';
function AnsiUpper; external user32 name 'CharUpperW';
function AnsiUpperBuff; external user32 name 'CharUpperBuffW';
function AnsiLower; external user32 name 'CharLowerW';
function AnsiLowerBuff; external user32 name 'CharLowerBuffW';
function AnsiNext; external user32 name 'CharNextW';
function AnsiPrev; external user32 name 'CharPrevW';
function AppendMenu; external user32 name 'AppendMenuW';
//function BroadcastSystemMessage; external user32 name 'BroadcastSystemMessageW';
//function BroadcastSystemMessageW; external user32 name 'BroadcastSystemMessageW';
function CallMsgFilter; external user32 name 'CallMsgFilterW';
function CallWindowProc; external user32 name 'CallWindowProcW';
function ChangeDisplaySettings; external user32 name 'ChangeDisplaySettingsW';
function ChangeDisplaySettingsEx; external user32 name 'ChangeDisplaySettingsExW';
function ChangeMenu; external user32 name 'ChangeMenuW';
function CharLower; external user32 name 'CharLowerW';
function CharLowerBuff; external user32 name 'CharLowerBuffW';
function CharNext; external user32 name 'CharNextW';
function CharNextEx; external user32 name 'CharNextExW';
function CharPrev; external user32 name 'CharPrevW';
function CharPrevEx; external user32 name 'CharPrevExW';
function CharToOem; external user32 name 'CharToOemW';
function CharToOemBuff; external user32 name 'CharToOemBuffW';
function CharUpper; external user32 name 'CharUpperW';
function CharUpperBuff; external user32 name 'CharUpperBuffW';
function CopyAcceleratorTable; external user32 name 'CopyAcceleratorTableW';
function CreateAcceleratorTable; external user32 name 'CreateAcceleratorTableW';
function CreateDesktop; external user32 name 'CreateDesktopW';
function CreateDialogIndirectParam; external user32 name 'CreateDialogIndirectParamW';
function CreateDialogParam; external user32 name 'CreateDialogParamW';
function CreateMDIWindow; external user32 name 'CreateMDIWindowW';
function CreateWindowEx; external user32 name 'CreateWindowExW';
function CreateWindowStation; external user32 name 'CreateWindowStationW';
function DefDlgProc; external user32 name 'DefDlgProcW';
function DefFrameProc; external user32 name 'DefFrameProcW';
function DefMDIChildProc; external user32 name 'DefMDIChildProcW';
function DefWindowProc; external user32 name 'DefWindowProcW';
function DialogBoxIndirectParam; external user32 name 'DialogBoxIndirectParamW';
function DialogBoxParam; external user32 name 'DialogBoxParamW';
function DispatchMessage; external user32 name 'DispatchMessageW';
function DlgDirList; external user32 name 'DlgDirListW';
function DlgDirListComboBox; external user32 name 'DlgDirListComboBoxW';
function DlgDirSelectComboBoxEx; external user32 name 'DlgDirSelectComboBoxExW';
function DlgDirSelectEx; external user32 name 'DlgDirSelectExW';
function DrawState; external user32 name 'DrawStateW';
function DrawText; external user32 name 'DrawTextW';
function DrawTextEx; external user32 name 'DrawTextExW';
function EnumDesktops; external user32 name 'EnumDesktopsW';
function EnumDisplaySettings; external user32 name 'EnumDisplaySettingsW';
{$IFDEF _D4orHigher}
function EnumDisplayDevices; external user32 name 'EnumDisplayDevicesW';
{$ENDIF}
function EnumProps; external user32 name 'EnumPropsW';
function EnumPropsEx; external user32 name 'EnumPropsExW';
function EnumWindowStations; external user32 name 'EnumWindowStationsW';
function FindWindow; external user32 name 'FindWindowW';
function FindWindowEx; external user32 name 'FindWindowExW';
{$IFDEF _D4orHigher}
function GetAltTabInfo; external user32 name 'GetAltTabInfoW';
{$ENDIF}
function GetClassInfo; external user32 name 'GetClassInfoW';
function GetClassInfoEx; external user32 name 'GetClassInfoExW';
function GetClassLong; external user32 name 'GetClassLongW';
function GetClassName; external user32 name 'GetClassNameW';
function GetClipboardFormatName; external user32 name 'GetClipboardFormatNameW';
function GetDlgItemText; external user32 name 'GetDlgItemTextW';
function GetKeyNameText; external user32 name 'GetKeyNameTextW';
function GetKeyboardLayoutName; external user32 name 'GetKeyboardLayoutNameW';
function GetMenuItemInfo; external user32 name 'GetMenuItemInfoW';
function GetMenuString; external user32 name 'GetMenuStringW';
function GetMessage; external user32 name 'GetMessageW';
function GetProp; external user32 name 'GetPropW';
function GetTabbedTextExtent; external user32 name 'GetTabbedTextExtentW';
function GetUserObjectInformation; external user32 name 'GetUserObjectInformationW';
function GetWindowLong; external user32 name 'GetWindowLongW';
function GetWindowModuleFileName; external user32 name 'GetWindowModuleFileNameW';
function GetWindowText; external user32 name 'GetWindowTextW';
function GetWindowTextLength; external user32 name 'GetWindowTextLengthW';
function GrayString; external user32 name 'GrayStringW';
function InsertMenu; external user32 name 'InsertMenuW';
function InsertMenuItem; external user32 name 'InsertMenuItemW';
function IsCharAlpha; external user32 name 'IsCharAlphaW';
function IsCharAlphaNumeric; external user32 name 'IsCharAlphaNumericW';
function IsCharLower; external user32 name 'IsCharLowerW';
function IsCharUpper; external user32 name 'IsCharUpperW';
function IsDialogMessage; external user32 name 'IsDialogMessageW';
function LoadAccelerators; external user32 name 'LoadAcceleratorsW';
function LoadBitmap; external user32 name 'LoadBitmapW';
function LoadCursor; external user32 name 'LoadCursorW';
function LoadCursorFromFile; external user32 name 'LoadCursorFromFileW';
function LoadIcon; external user32 name 'LoadIconW';
function LoadImage; external user32 name 'LoadImageW';
function LoadKeyboardLayout; external user32 name 'LoadKeyboardLayoutW';
function LoadMenu; external user32 name 'LoadMenuW';
function LoadMenuIndirect; external user32 name 'LoadMenuIndirectW';
function LoadString; external user32 name 'LoadStringW';
function MapVirtualKey; external user32 name 'MapVirtualKeyW';
function MapVirtualKeyEx; external user32 name 'MapVirtualKeyExW';
function MessageBox; external user32 name 'MessageBoxW';
function MessageBoxEx; external user32 name 'MessageBoxExW';
function MessageBoxIndirect; external user32 name 'MessageBoxIndirectW';
function ModifyMenu; external user32 name 'ModifyMenuW';
function OemToAnsi; external user32 name 'OemToCharW';
function OemToAnsiBuff; external user32 name 'OemToCharBuffW';
function OemToChar; external user32 name 'OemToCharW';
function OemToCharBuff; external user32 name 'OemToCharBuffW';
function OpenDesktop; external user32 name 'OpenDesktopW';
function OpenWindowStation; external user32 name 'OpenWindowStationW';
function PeekMessage; external user32 name 'PeekMessageW';
function PostMessage; external user32 name 'PostMessageW';
function PostThreadMessage; external user32 name 'PostThreadMessageW';
function RealGetWindowClass; external user32 name 'RealGetWindowClassW';
function RegisterClass; external user32 name 'RegisterClassW';
function RegisterClassEx; external user32 name 'RegisterClassExW';
function RegisterClipboardFormat; external user32 name 'RegisterClipboardFormatW';
{$IFDEF _D4orHigher}
function RegisterDeviceNotification; external user32 name 'RegisterDeviceNotificationW';
{$ENDIF}
function RegisterWindowMessage; external user32 name 'RegisterWindowMessageW';
function RemoveProp; external user32 name 'RemovePropW';
function SendDlgItemMessage; external user32 name 'SendDlgItemMessageW';
function SendMessage; external user32 name 'SendMessageW';
function SendMessageCallback; external user32 name 'SendMessageCallbackW';
function SendMessageTimeout; external user32 name 'SendMessageTimeoutW';
function SendNotifyMessage; external user32 name 'SendNotifyMessageW';
function SetClassLong; external user32 name 'SetClassLongW';
function SetDlgItemText; external user32 name 'SetDlgItemTextW';
function SetMenuItemInfo; external user32 name 'SetMenuItemInfoW';
function SetProp; external user32 name 'SetPropW';
function SetUserObjectInformation; external user32 name 'SetUserObjectInformationW';
function SetWindowLong; external user32 name 'SetWindowLongW';
function SetWindowText; external user32 name 'SetWindowTextW';
function SetWindowsHook; external user32 name 'SetWindowsHookW';
function SetWindowsHookEx; external user32 name 'SetWindowsHookExW';
function SystemParametersInfo; external user32 name 'SystemParametersInfoW';
function TabbedTextOut; external user32 name 'TabbedTextOutW';
function TranslateAccelerator; external user32 name 'TranslateAcceleratorW';
function UnregisterClass; external user32 name 'UnregisterClassW';
function VkKeyScan; external user32 name 'VkKeyScanW';
function VkKeyScanEx; external user32 name 'VkKeyScanExW';
function WinHelp; external user32 name 'WinHelpW';
function wsprintf; external user32 name 'wsprintfW';
function wvsprintf; external user32 name 'wvsprintfW';
// NT 4.0 bug workaround - NT 4.0 doesn't test bInitialOwner for zero/nonzero, it tests for 1
function _CreateMutex(lpMutexAttributes: PSecurityAttributes;
  bInitialOwner: Integer; lpName: PWideChar): THandle; stdcall;
  external kernel32 name 'CreateMutexW';
function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL; lpName: PWideChar): THandle;
begin
  Result := _CreateMutex(lpMutexAttributes, Integer(Boolean(bInitialOwner)), lpName);
end;
{$ENDIF implementation_part} ///////////////////////////////////////////////////
